package utils

import (
	"crypto/md5"
	"fmt"
	"io"
	"os"
	"sg-backend/global"
	"strconv"
	"time"
)

// 1，获取当前时间，转为时间戳，返回str

func GetCurrentTimeStr() string {
	var nowTime = time.Now()
	var nowTimeStr = nowTime.Format("20060102150405")
	var microSecond = nowTime.Nanosecond()
	return nowTimeStr + strconv.Itoa(microSecond)
}

// 2， 根据字节大小计算文件大小，转为合适的KB,MB,GB,TB

func CalcFileSize(size int64) string {

	// 计算KB
	kbSize := size / 1024
	if kbSize < 1024 {
		return strconv.Itoa(int(kbSize)) + "KB"
	}

	// 计算MB
	mbSize := kbSize / 1024
	if mbSize < 1024 {
		return strconv.Itoa(int(mbSize)) + "MB"
	}

	// 计算gB
	gbSize := mbSize / 1024
	if gbSize < 1024 {
		return strconv.Itoa(int(gbSize)) + "GB"
	}

	// 计算TB
	tbSize := gbSize / 1024
	return strconv.Itoa(int(tbSize)) + "TB"
}

// 3，获取文件的MD5

func GetFileMd5(filePath string) string {
	f, err := os.Open(filePath)
	if err != nil {
		global.BLog.Error("获取文件MD5失败！%v, %v", filePath, err)
		return ""
	}
	defer f.Close()
	md5hash := md5.New()
	if _, err := io.Copy(md5hash, f); err != nil {
		global.BLog.Error("获取文件MD5失败！%v, %v", filePath, err)
		return ""
	}

	return fmt.Sprintf("%x", md5hash.Sum(nil))
}
